Skip to content

chas_stattest, reshape_chas & format catalogs run on Jenner#230

Open
jenner-analytics wants to merge 1 commit into
NeighborhoodInfoDC:mainfrom
jenner-analytics:jenner-check/initial-bundles
Open

chas_stattest, reshape_chas & format catalogs run on Jenner#230
jenner-analytics wants to merge 1 commit into
NeighborhoodInfoDC:mainfrom
jenner-analytics:jenner-check/initial-bundles

Conversation

@jenner-analytics

@jenner-analytics jenner-analytics commented Jul 10, 2026

Copy link
Copy Markdown

Jenneranalytics.com provides an API that runs SAS code, with support for more than 200 SAS procedures. You can also use it with AI assistants in a collaborative workspace. It's available for Mac on the Apple App Store, and by license for Windows and Linux.

We support the larger community by
(1) increasing access to SAS-compatible systems,
(2) by providing test coverage and a test coverage framework to public SAS repos in order to encourage the use of best practices in software engineering.

Your chas_stattest.sas runs on Jenner unmodified — this PR adds a small compatibility bundle so you can see for yourself. It's the test we wrote for your library, shared in case it's useful, and was assembled with AI assistance as is most code in modern businesses today. Everything sits under a single jenner-check/ directory: each bundle carries a copy of one of your macros or format programs, a small mock input that stands in for the site data set it normally reads, the captured log and listing from running it, and a short shell runner. Nothing outside jenner-check/ is touched, nothing runs on merge, and there are no workflow files or hooks.

What stood out reading through the library is how much statistical care is folded into small, reusable pieces. chas_stattest is a good example: it builds the two-sample standard error from ACS margins of error, then tiers the t-statistic with SAS's chained-comparison form — 2.576 > abs(Tstat) >= 1.96 — to drop each estimate into the right 0.01 / 0.05 / 0.10 significance band. It's compact and reads exactly like the underlying test. The consistent program headers across the repo (Library, Project, Environment, dated Modifications) also make an outside reader's first pass unusually painless.

The bundles cover a spread of the library's building blocks — the significance macro, the %reshape_chas column-positioning macro, the Section 8 address-correction autocall macro, and the Section 8 MF and LIHTC format catalogs:

jenner-check/
├── run_jenner.sh
├── README.md
├── t001_chas_stattest/          # %chas_stattest two-estimate significance test
├── t002_reshape_chas/           # %reshape_chas varlist -> positional c1..cN
├── t003_sec8mf_addr_correct/    # %Sec8MF_addr_correct SELECT/WHEN fixups
├── t004_sec8mf_formats/         # Sec8MF_formats.sas PROC FORMAT catalog
└── t005_lihtc_formats/          # Make_formats_lihtc.sas PROC FORMAT catalog

To try one directly, check out this branch and, from the repo root, POST a bundle's script to the hosted API:

# Check out this PR (puts you on its branch); then run from the repo root:
gh pr checkout 230
curl -sS --data-binary @jenner-check/t001_chas_stattest/script.sas https://api.jenneranalytics.com/v1/quick

Or run cd jenner-check && ./run_jenner.sh --all to re-run every bundle and check each one against the log and listing recorded in its expected.json. The hosted API is free to try, no signup; full API reference: the docs.

On what leaves your machine: the runner uploads only the SAS source text of the script it runs (plus a two-line autoexec that caps input rows) to api.jenneranalytics.com, which runs it and returns the log and listing. It does not read or upload any data files, so anything sitting next to a script stays on your machine, and nothing is sent unless you run a command yourself — only the code you run is transmitted, the same as pasting a snippet into any hosted tool. Because a script's own source is what's sent, you can review it first if one embeds values inline.

Merge it, close it, or ignore it — all fine, and no response is expected; we won't open further PRs in this repo. To opt out for good, put no-more-prs in any comment here, or open an issue titled jenner-check: opt out.


Lawrence W. Sinclair
CEO / Jenner Analytics Ltd
linkedin.com/in/lwsinclair/

Adds a self-contained jenner-check/ directory with five bundles derived from
this library's own macros and format programs:
  t001_chas_stattest      - %chas_stattest two-estimate significance test
  t002_reshape_chas       - %reshape_chas varlist -> positional c1..cN
  t003_sec8mf_addr_correct- %Sec8MF_addr_correct SELECT/WHEN address fixups
  t004_sec8mf_formats     - Sec8MF_formats.sas PROC FORMAT catalog
  t005_lihtc_formats      - Make_formats_lihtc.sas PROC FORMAT catalog

Each bundle ships a copy of the program, a small mock input standing in for
the site data set it reads, the captured log and listing, and pinned
expected.json fields. A shell runner (run_jenner.sh) re-runs every bundle
against api.jenneranalytics.com and checks the pinned fields. Nothing outside
jenner-check/ is touched and nothing runs on merge.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant